import { http } from '@/api/http'
import { httpErrorHandle } from '@/utils'
import { ContentTypeEnum, RequestHttpEnum, ModuleTypeEnum } from '@/enums/httpEnum'
import { ProjectItem, ProjectDetail } from './project'

// * 项目列表
export const projectListApi = async (data: object) => {
  try {
    const res = await http(RequestHttpEnum.POST)<ProjectItem[]>(`/project/list`, data)
    return res
  } catch {
    httpErrorHandle()
  }
}

// * 新增项目
export const createProjectApi = async (data: object) => {
  try {
    const res = await http(RequestHttpEnum.POST)<{
      /**
       * 项目id
       */
      projectID: number
    }>(`/project/save`, data)
    return res
  } catch {
    httpErrorHandle()
  }
}

// * 获取项目
export const fetchProjectApi = async (data: object) => {
  try {
    const res: any = await http(RequestHttpEnum.POST)<ProjectDetail>(`/project/detail`, data)
    return {
      ...res,
      data: res?.data?.[0]
    }
  } catch {
    httpErrorHandle()
  }
}

// * 保存项目
export const saveProjectApi = async (data: object) => {
  try {
    const res = await http(RequestHttpEnum.POST)(
      `/project/save`,
      data
      // ContentTypeEnum.FORM_URLENCODED
    )
    return res
  } catch {
    httpErrorHandle()
  }
}

// * 修改项目基础信息
export const updateProjectApi = async (data: object) => {
  try {
    const res = await http(RequestHttpEnum.POST)(`${ModuleTypeEnum.PROJECT}/edit`, data)
    return res
  } catch {
    httpErrorHandle()
  }
}

// * 删除项目
export const deleteProjectApi = async (data: object) => {
  try {
    const res = await http(RequestHttpEnum.POST)(`/project/delete`, data)
    return res
  } catch {
    httpErrorHandle()
  }
}

// * 修改发布状态 [-1未发布,1发布]
export const changeProjectReleaseApi = async (data: object) => {
  try {
    const res = await http(RequestHttpEnum.PUT)(`${ModuleTypeEnum.PROJECT}/publish`, data)
    return res
  } catch {
    httpErrorHandle()
  }
}

// * 上传文件
export const uploadFile = async (data: object) => {
  try {
    const res = await http(RequestHttpEnum.POST)<{
      /**
       * 文件地址
       */
      fileName: string
      fileUrl: string
    }>(`/project/upload`, data, ContentTypeEnum.FORM_DATA)
    return {
      ...res,
      data: res?.data?.[0]
        ? {
            fileName: res?.data?.[0]?.fileName,
            fileUrl: res?.data?.[0]?.fileUrl + res.data?.[0]?.fileName
          }
        : null
    }
  } catch {
    httpErrorHandle()
  }
}


export const getNewMessageList = async (data: any) => {
  try {
    const res = await http(RequestHttpEnum.POST)('/message/new', data)
    return res
  } catch {
    httpErrorHandle()
  }
}

export const fetchReadMessage = async (data: any) => {
  try {
    const res = await http(RequestHttpEnum.POST)('/message/read', data)
    return res
  } catch {
    httpErrorHandle()
  }
}
